iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 17
1
Google Developers Machine Learning

AI可以分析股票嗎?系列 第 17

沒有實作所以只好講幹話系列(二) :: 模型中的激勵函數

  • 分享至 

  • xImage
  •  

零、引言

沒想到那麼快就出此系列的第二篇了,真的沒時間做啦!!!! 沒事,剛好記錄一下我的筆記XD

此篇要講的是我們訓練類神經網路中,會用到的另一個也是非常非常重要的東西 :: activation function。他有多重要呢? 記得之前在「股票預測需要什麼樣的NN模型?」提過tensorflow playground,裡面有個很難去用機器逼近的點分布,而我用了不少hidden layers和大的batch size以及使用relu的激勵函數才能使圖形收斂至如下圖 :

  • tensorflow playground的實作結果

其中最為重要的關鍵就在relu的使用,而relu其實就是一種activation function,所以讓我們理解它吧!

一、激勵函數要用在哪裡?

什麼? 一上來就談應用嗎? 放輕鬆~ 從應用講回來會更好理解 !! 我們先來看看如果沒有activation function會發生什麼事情? 就拿上面的漩渦圖當作範例 :

  • 沒有使用activation function,放再久都是這樣
  • 使用tanh,我訓練了1500個epoch才比較收斂
  • 使用relu,同樣約1500個epoch的結果,已經算是收斂得很好了
  • 至於sigmoid可以自己嘗試一下Orz 它估計是更久

上面有提到的主要三個activation function分別是sigmoidtanhrelu,他們會放在每個layers的後面,而為什麼要這麼做呢? 原因很簡單,為了要有「非線性現象」。 我們的類神經網路用算是由最基本的Ax + b = y式子而來,這個運算式無疑是在「線性代數」的範疇底下,歸根結柢總為「線性」逼近,對於一個離散型的、非線性的、或是複雜的資料,如何能夠用「線性」去描述?

答案是 : 無法

所以此時引入activation function放在各個y = Ax + b後面,對y做激勵(的感覺),可以這個寫作每一層的laysers output = act(Ax + b), 其中act就是activation function(抱歉,因為太長了,式子會很醜,所以自動減少了XD)

那麼,來看看有那些activation function吧!

二、activation有哪些?

其實不多 ! 大致可以分為3種~ Sigmoidtanh以及relu

不就上面用到的那三種嘛!!!?

對的,但其實relu還有其他變形,我們來看看它會對y做什麼樣的激勵吧!

- Sigmoid tanh ReLU
簡單示意圖

其中,relu是最好理解的,就是「y大於0我就保留,y小於0我就丟掉」,也最容易計算,速度自然最快,當然有利就有弊,雖然它的效能和函式都很簡單,但它對模型的預測上
...
...
...
...
也是最強的!!!!

我自己是非常意外的,當我看到sigmoid的式子或是tanh的式子,我在看到relu就想...這什麼東西 ? 但從歷史的角度,是先有sigmoid才有tanh,最後才是relu,而實際觀察也可以理解,relu的「非線性現象」最為明顯,雖然可能會造成0以下的結果都被丟掉了,但所得到的好處卻可以遠蓋過這些。sigmoidtanh都有一個非常致面的缺點 :: 會有梯度爆炸和梯度消失問題,詳情請見沒有實作所以只好講幹話系列(三) (別點進去不然我會被殺),簡單講梯度消失或是爆炸就是因為在更新模型參數的時候要取梯度,當然也要對激勵函數做梯度下降,拿sigmoid來說,對sigmoid微分後,只有在[0-1]的範圍內有梯度更新,其餘都是0,所以在y > 1 or y < 0的區段是「沒有梯度的」,這就是 梯度消失 ,反之,若是在[0-1]之間就沒問題嗎? 有的,在這中間的梯度會持續被放大,對於一個深一點的模型,在越深的地方就會收到連續的放大倍數,梯度會變很大,此稱為 梯度爆炸 。觀察一下sigmoidtanh皆會有這兩個問題,反觀relu的微分是一個常數,或是0,解決了梯度消失和爆炸問題 !!

  • 下方我簡單整理了幾個activation function的比較
- 簡單示意圖 梯度消失(飽和) 非0中心輸出 負區域死亡 exp()計算 參數數量2倍
Sigmoid YES YES - YES -
tanh YES - - - -
ReLU - YES YES - -
Leaky Relu - - - - -
ELU - - - YES -
Maxout - - - - - YES

三、總結

今天理解了activation function為何物,並得出結論 :: 用relu就對了

其實真的無法說準

凡有規則必有例外,LSTM網路就必須使用tanh,這與LSTM的更新網路有關(最大只有1),但無論如何,一個類神經網路模型如果沒有激勵函數,儘管只有稍微複雜一點的資料,仍可能無法有很好的擬合(fit)。提到此,我們如果有下一篇「沒有實作所以只好講幹話系列」將提到「過擬合」(overfitting)和loss、accuracy之間的關係 (呵呵先打預防針


上一篇
沒有實作所以只好講幹話系列(一) :: 從loss到梯度下降
下一篇
沒有實作所以只好講幹話系列(三) :: 過擬合了 !!
系列文
AI可以分析股票嗎?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言